package com.aike.user_center_practice.common.BaseResponse;

/**
 * 返回工具类：帮我们解决多次编写的麻烦
 */
public class ResultUtils {

    /**
     * 返回成功
     * @param data 返回信息
     * @return 泛型
     * @param <T> 泛型
     */
    public static <T>  BaseResponse<T> success (T data) {
        return new BaseResponse<>(0, data, "ok");
    }

    /**
     * 失败返回
     * @param errorCode 错误码
     * @return 相关错误码
     * @param <T> 泛型
     */
    public static <T>  BaseResponse<T> error (ErrorCode errorCode) {
        return new BaseResponse<>(errorCode);
    }

    /**
     * 失败返回语法糖: 自定义的通用错误返回类
     * @param errorCode 错误码
     * @param message 描述
     * @param description 细节描述
     * @return 相关错误码+
     */
    public static BaseResponse error (ErrorCode errorCode, String message, String description) {
        return new BaseResponse<>(errorCode.getCode(), null, message, description);
    }

    /**
     * 失败返回语法糖: 自定义的通用错误返回类
     * @param code 错误码
     * @param message 描述
     * @param description 细节描述
     * @return 相关错误码+
     */
    public static BaseResponse error (int code, String message, String description) {
        return new BaseResponse<>(code, null, message, description);
    }

    /**
     * 失败返回语法糖: 自定义的通用错误返回类
     * @param errorCode 错误码
     * @param description 细节描述
     * @return 相关错误码+
     */
    public static BaseResponse error (ErrorCode errorCode, String description) {
        return new BaseResponse<>(errorCode.getCode(), null, errorCode.getMessage(), description);
    }
}
